package com.example.service.impl;

import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;

public class AccountManager {
    /**
     * 以P12格式将账户文件保存到指定路径。
     * @param cryptoKeyPair 需要保存的密钥对
     * @param p12FilePath 保存路径
     * @param password 用于保护P12文件的密码
     */
    public static void saveAccountWithP12(CryptoKeyPair cryptoKeyPair, String p12FilePath, String password) {
        // 以P12的格式将账户文件保存到p12FilePath路径
        try {
            cryptoKeyPair.storeKeyPairWithP12(p12FilePath, password);
//            System.out.println("Account saved to " + p12FilePath);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Failed to save account to " + p12FilePath);
        }
    }

    /**
     * 从指定路径加载P12账户文件，并将其设置为交易发送账户。
     * @param client FISCO BCOS客户端
     * @param p12AccountFilePath P12账户文件路径
     * @param password 用于加载P12文件的密码
     */
    public static boolean loadP12Account(Client client, String p12AccountFilePath, String password) {
        // 通过client获取CryptoSuite对象
        CryptoSuite cryptoSuite = client.getCryptoSuite();
        // 加载P12账户文件
        try {
            cryptoSuite.loadAccount("p12", p12AccountFilePath, password);
            System.out.println("Account loaded from " + p12AccountFilePath);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Failed to load account from " + p12AccountFilePath);
            return false;
        }
        return true;
    }
}
